
const fs = require('fs');

// 获取所有储存空间
exports.listBuckets = function (client) {
    const promise = new Promise((resolve, reject) => {
        try {
            const result = client.listBuckets();
            resolve(result)
        } catch (err) {
            reject(err)
        }
    })
    return promise
}

// 获取所有列表
exports.list = function (client) {
    const promise = new Promise((resolve, reject) => {
        const result = client.list();
        resolve(result)
    })
    return promise
}


const path = require("path")
// 获取当前脚本的目录
const currentDir = __dirname;
console.log('currentDir---->', currentDir);


// 自定义请求头
const headers = {
    // 指定Object的存储类型。
    'x-oss-storage-class': 'Standard',
    // 指定Object的访问权限。
    'x-oss-object-acl': 'private',
    // 通过文件URL访问文件时，指定以附件形式下载文件，下载后的文件名称定义为example.txt。

    // 设置Object的标签，可同时设置多个标签。
    'x-oss-tagging': 'Tag1=1&Tag2=2',
    // 指定PutObject操作时是否覆盖同名目标Object。此处设置为true，表示禁止覆盖同名Object。
    'x-oss-forbid-overwrite': 'true',
};

// 新增
exports.put = function put(client, name) {
    const uploadDir = path.join(path.dirname(currentDir), '/nodeOss/uploads');
    const filePath = path.join(uploadDir, name);
    const promise = new Promise((resolve, reject) => {
        try {
            client.put(name, filePath
                // 自定义headers
                , { headers }
            ).then(result => {
                resolve(result);
                if (result.res.status == 200) {
                    fs.unlink(filePath, (err) => {
                        if (err) {
                            // 如果发生错误，打印错误信息
                            console.error('删除文件失败:', err);
                        } else {
                            // 如果文件成功删除，打印成功信息
                            console.log('文件已成功删除');
                        }
                    });
                }
            })
        } catch (e) {
            reject(e);
        }
    })
    return promise
}





//   获取
async function get() {
    try {
        // 填写Object完整路径和本地文件的完整路径。Object完整路径中不能包含Bucket名称。
        // 如果指定的本地文件存在会覆盖，不存在则新建。
        // 如果未指定本地路径，则下载后的文件默认保存到示例程序所属项目对应本地路径中。
        const result = await client.get('exampleobject.txt', 'D:\\ps\\examplefile.txt');

    } catch (e) {
        console.log(e, 'e');
    }
}


// 删除
exports.deleteObject = function (client) {
    const promise = new Promise((resolve, reject) => {
        try {
            // 填写Object完整路径。Object完整路径中不能包含Bucket名称。
            const result = client.delete('cww-file/微信图片_20240820094524.jpg');
            resolve(result)
        } catch (error) {

            reject(error)
        }

    })
    return promise
}




